#ifndef _aky_bat_H
#define _aky_bat_H
#include "aky_define.h"

#define R4  (499ul)     //500K  分压电阻
#define R5  (100ul)     //100K
#define SARADC_FULLRANGE  (4095ul) //adc最大量程
#define SARADC_REFV     (270ul)  //参考电压 
#define V_OFFSET  (0ul) //补偿

#define CHECK_LIMIT (10ul) //最小检测次数  即取平均次数

#define ADC_DETEC_BAT_ENABLE (0) //使能adc检测 使能则adc检测优先级更高(先检测adc再检测比较器)  \0不使能则默认使用比较器

//低电压触发阈值
#define LOW_BAT_VAL ((uint32_t)340)

typedef enum
{
    NO_CHARGE = 0,//没有充电 空闲
    CHARGING,//正在充电
    FULL_BAT,// 充满
    NO_BAT_AND_USB_INPUT,//没有锂电但usb供电插入, 此时charge pin会一直翻转(2ms周期)
}e_charge_stat_t;

void aky_bat_init(void);
uint16_t get_bat_row_val(void);
uint16_t get_cur_bat_val_by_math(void);
uint8_t check_low_bat_trig(uint16_t low_bat_threshold);
uint8_t check_low_bat_pro(uint16_t low_bat_threshold);
void check_low_bat_init(void);
uint8_t check_low_bat_trig_compare(void);
void aky_adc_bat_init(void);
uint8 get_baterry_cells(uint16 bat_val);
e_charge_stat_t get_cur_charge_stat(void);
void charge_stat_detect_pro(void);
void show_baterry_cells(uint8 cells);
void low_bat_icon_on(void);

#endif // 